package br.com.foxinline.modelo.ep;

import br.com.foxinline.enums.ep.Central;
import br.com.foxinline.enums.ep.TipoAtoCEP;
import br.com.foxinline.enums.ep.TipoAtoCESDI;
import br.com.foxinline.enums.ep.TipoAtoRCTO;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;

/**
 *
 * @author cadomeireles
 */
@Entity
public class AtoTipoEP implements Serializable {

    @Id
    @SequenceGenerator(sequenceName = "seq_ato_tipo_ep", name = "seq_ato_tipo_ep", allocationSize = 1)
    @GeneratedValue(generator = "seq_ato_tipo_ep", strategy = GenerationType.SEQUENCE)
    private Long id;

    private boolean ativo;

    @Temporal(TemporalType.DATE)
    private Date dataCadastro;

    @Enumerated(EnumType.STRING)
    private Central central;

    private String codigo;

    private String descricao;

    @Enumerated(EnumType.STRING)
    private TipoAtoCEP tipoAtoCEP;

    @Enumerated(EnumType.STRING)
    private TipoAtoCESDI tipoAtoCESDI;

    @Enumerated(EnumType.STRING)
    private TipoAtoRCTO tipoAtoRCTO;

    public AtoTipoEP() {
        this.ativo = true;
        this.dataCadastro = new Date();
    }

    public AtoTipoEP(Long id, Central central, String codigo, String descricao, TipoAtoCEP tipoAtoCEP, TipoAtoCESDI tipoAtoCESDI, TipoAtoRCTO tipoAtoRCTO) {
        this.id = id;
        this.ativo = true;
        this.dataCadastro = new Date();
        this.central = central;
        this.codigo = codigo;
        this.descricao = descricao;
        this.tipoAtoCEP = tipoAtoCEP;
        this.tipoAtoCESDI = tipoAtoCESDI;
        this.tipoAtoRCTO = tipoAtoRCTO;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

    public Date getDataCadastro() {
        return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }

    public Central getCentral() {
        return central;
    }

    public void setCentral(Central central) {
        this.central = central;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public TipoAtoCEP getTipoAtoCEP() {
        return tipoAtoCEP;
    }

    public void setTipoAtoCEP(TipoAtoCEP tipoAtoCEP) {
        this.tipoAtoCEP = tipoAtoCEP;
    }

    public TipoAtoCESDI getTipoAtoCESDI() {
        return tipoAtoCESDI;
    }

    public void setTipoAtoCESDI(TipoAtoCESDI tipoAtoCESDI) {
        this.tipoAtoCESDI = tipoAtoCESDI;
    }

    public TipoAtoRCTO getTipoAtoRCTO() {
        return tipoAtoRCTO;
    }

    public void setTipoAtoRCTO(TipoAtoRCTO tipoAtoRCTO) {
        this.tipoAtoRCTO = tipoAtoRCTO;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 97 * hash + (this.id != null ? this.id.hashCode() : 0);
        hash = 97 * hash + (this.ativo ? 1 : 0);
        hash = 97 * hash + (this.dataCadastro != null ? this.dataCadastro.hashCode() : 0);
        hash = 97 * hash + (this.central != null ? this.central.hashCode() : 0);
        hash = 97 * hash + (this.codigo != null ? this.codigo.hashCode() : 0);
        hash = 97 * hash + (this.descricao != null ? this.descricao.hashCode() : 0);
        hash = 97 * hash + (this.tipoAtoCEP != null ? this.tipoAtoCEP.hashCode() : 0);
        hash = 97 * hash + (this.tipoAtoCESDI != null ? this.tipoAtoCESDI.hashCode() : 0);
        hash = 97 * hash + (this.tipoAtoRCTO != null ? this.tipoAtoRCTO.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final AtoTipoEP other = (AtoTipoEP) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        if (this.ativo != other.ativo) {
            return false;
        }
        if (this.dataCadastro != other.dataCadastro && (this.dataCadastro == null || !this.dataCadastro.equals(other.dataCadastro))) {
            return false;
        }
        if (this.central != other.central) {
            return false;
        }
        if ((this.codigo == null) ? (other.codigo != null) : !this.codigo.equals(other.codigo)) {
            return false;
        }
        if ((this.descricao == null) ? (other.descricao != null) : !this.descricao.equals(other.descricao)) {
            return false;
        }
        if (this.tipoAtoCEP != other.tipoAtoCEP) {
            return false;
        }
        if (this.tipoAtoCESDI != other.tipoAtoCESDI) {
            return false;
        }
        if (this.tipoAtoRCTO != other.tipoAtoRCTO) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "AtoTipoEP{" + "id=" + id + ", ativo=" + ativo + ", dataCadastro=" + dataCadastro + ", central=" + central + ", codigo=" + codigo + ", descricao=" + descricao + ", tipoAtoCEP=" + tipoAtoCEP + ", tipoAtoCESDI=" + tipoAtoCESDI + ", tipoAtoRCTO=" + tipoAtoRCTO + '}';
    }

}
